package com.food.controller;

import com.food.common.R;
import com.food.entity.dto.CouponWebDto;
import com.food.entity.pojo.Coupon;
import com.food.entity.vo.CouponVo;
import com.food.entity.vo.PageVo;
import com.food.service.CouponService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

import java.util.List;

@RestController
@RequestMapping("/coupon")
public class CouponController {

    @Autowired
    private CouponService couponService;

    /**
     * 获取用户的所有优惠券
     */
    @GetMapping("/user/{userId}")
    public List<CouponVo> getUserCoupons(@PathVariable Integer userId) {
        return couponService.getCouponsByUserId(userId);
    }

    /**
     * 列出优惠券接口
     * 该接口用于根据传入的条件分页查询优惠券信息
     *
     * @param couponWebDto 优惠券查询条件，包含分页信息和筛选条件
     * @return 返回查询结果，包含优惠券分页信息和状态码
     */
    @GetMapping("/list")
    public R listCoupons(@RequestBody CouponWebDto couponWebDto) {
        PageVo<Coupon> couponPageVo = couponService.listCoupon(couponWebDto);
        return R.success(couponPageVo);
    }

    /**
     * 添加优惠券接口
     * 该接口用于添加一个新的优惠券到系统中
     *
     * @param coupon 优惠券对象，包含优惠券的所有信息
     * @return 返回操作结果对象R，成功时包含null数据
     */
    @PostMapping("/add")
    public R addCoupon(@RequestBody Coupon coupon) {
        couponService.addCoupon(coupon);
        return R.success(null);
    }

    /**
     * 更新优惠券信息
     * 该接口用于接收前端传来的优惠券对象，并更新数据库中对应的优惠券信息。
     *
     * @param coupon 优惠券对象，包含需要更新的优惠券信息
     * @return 返回操作结果，成功则返回成功信息
     */
    @PutMapping("/update")
    public R updateCoupon(@RequestBody Coupon coupon) {
        couponService.updateCoupon(coupon);
        return R.success(null);
    }

    /**
     * 删除优惠券接口
     * 根据传入的优惠券ID删除对应的优惠券信息
     *
     * @param id 优惠券ID
     * @return 操作结果，成功返回R.success(null)
     */
    @DeleteMapping("/delete/{id}")
    public R deleteCoupon(@PathVariable Integer id) {
        couponService.deleteCoupon(id);
        return R.success(null);
    }


}
